<?php

/**
 * Cita form.
 *
 * @package    toyomotor
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class CitaForm extends BaseCitaForm
{
  public function configure()
  {
      /*unset($this['created_at']);
      $this->setDefault('status', false);
      $this->setDefault('is_aceptado', false);
      $this->setDefault('is_pending', false);

      $this->widgetSchema['hora'] = new sfWidgetFormChoice(array('choices'  => Doctrine_Core::getTable('Cita')->getHoras(),'expanded' => false,));
      $this->widgetSchema['status'] = new sfWidgetFormChoice(array('choices'  => Doctrine_Core::getTable('Cita')->getStatus(),'expanded' => false,));
      $years = range(date('Y'), date('Y')+1);
      $this->setWidget('fecha',new sfWidgetFormJQueryDate(array('config' => '{firstDay: 1, changeMonth: true, changeYear: true}', 'culture' => 'es', 'date_widget' => new sfWidgetFormDate(array('years' => array_combine($years, $years), 'format' => '%day%%month%%year%' )))));
      $this->widgetSchema['servicios_list'] = new sfWidgetFormDoctrineChoice(array('model' => 'Servicio', 'multiple' => true, 'expanded' => true));*/
  }
  
    
  /*
   * Ing. Roberto Hernandez De La Luz
   * Fecha: 19/08/11
   * Funcion para mostrar un formulario de nuevas citas cargando donde solo se 
   * preguntara la fecha, hora, hora preferida, comentarios de usuario, lista de vehiculos del usuario*/
  public function solicitudcita($usuario){
      
      unset($this['created_at'],$this['id_cita'],$this['fecha_entrega'],$this['hora_entrega'],$this['detalles'],
              $this['observacion'],$this['id_vendedor'],$this['servicios_list'],$this['status'],
              $this['is_aceptado'], $this['encuesta'], $this['claveseguridad'],$this['hora_preferida']);

      $this->widgetSchema['id_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['is_pending'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['id_vehiculo_usuario'] = new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('VehiculoUsuario'), 'add_empty' => false, 'label' => 'Vehiculo'));
      $this->widgetSchema['detalles_usuario'] = new sfWidgetFormTextarea(array('label' => 'Observaciones'));
      
      //Widgets dependientes segun mañana o tarde
      //@todo este cambio se realizo a peticion del cliente el 14/11/2011 originalmente no estaba asi
      //ya que hora preferida era la hora a la que el preferia la cita, en caso de que la hora que pidio no estuviera disponible
     //
     //Se eliminara a peticion del cliente 16/11/2011 y solo se dejara un select para todas las horas
      /*$this->widgetSchema['hora_preferida'] = new sfWidgetFormArrayDependentSelect(array(
            'callable' => array('ModelosAnios', 'getHorario'),
            'add_empty' => false,
        ));

        $this->widgetSchema['hora'] = new sfWidgetFormArrayDependentSelect(array(
            'callable' => array('ModelosAnios', 'getHora'),
            'depends' => 'hora_preferida',
            'add_empty' => false,
        )); */
      
      $horasfinal = array(       '07:30 am' => '07:30 am',
                                 '07:45 am' => '07:45 am',
                                 '08:00 am' => '08:00 am',
                                 '08:15 am' => '08:15 am',
                                 '08:30 am' => '08:30 am',
                                 '08:45 am' => '08:45 am',
                                 '09:00 am' => '09:00 am',
                                 '09:15 am' => '09:15 am',
                                 '09:30 am' => '09:30 am',
                                 '09:45 am' => '09:45 am',
                                 '10:00 am' => '10:00 am',
                                 '10:15 am' => '10:15 am',
                                 '10:30 am' => '10:30 am',
                                 '10:45 am' => '10:45 am',
                                 '11:00 am' => '11:00 am',
                                 '11:15 am' => '11:15 am',
                                 '11:30 am' => '11:30 am',
                                 '11:45 am' => '11:45 am',
                                 '01:00 pm' => '01:00 pm',
                                 '01:15 pm' => '01:15 pm',
                                 '01:30 pm' => '01:30 pm',
                                 '01:45 pm' => '01:45 pm',
                                 '02:00 pm' => '02:00 pm',
                                 '02:15 pm' => '02:15 pm',
                                 '02:30 pm' => '02:30 pm',
                                 '02:45 pm' => '02:45 pm',
                                 '03:00 pm' => '03:00 pm',
                                 '03:15 pm' => '03:15 pm',
                                 '03:30 pm' => '03:30 pm',
                                 '03:45 pm' => '03:45 pm',
                                 '04:00 pm' => '04:00 pm',
                                 '04:15 pm' => '04:15 pm',
                                 '04:30 pm' => '04:30 pm',
                                 '04:45 pm' => '04:45 pm',
    );
      
      $this->widgetSchema['hora'] = new sfWidgetFormChoice(array('choices' => $horasfinal), array());        
      //*Codigo agregado 15/11/2011 a peticion de un cambio del cliente se agregara ahora el kilometraje*/
        //$this->widgetSchema['kilometraje'] = new 
      
      //$this->widgetSchema['hora_preferida'] = new sfWidgetFormChoice(array('choices' => array('Mañana' => 'Mañana', 'Tarde' => 'Tarde'), 'label' => 'Horario Preferido'));
      
      $this->setDefault('id_usuario', $usuario);
      $this->setDefault('is_pending', true);
      
      //$this->widgetSchema['hora'] = new sfWidgetFormChoice(array('choices'  => Doctrine_Core::getTable('Cita')->getHoras(),'expanded' => false,));
      $years = range(date('Y'), date('Y')+1);
      $this->setWidget('fecha',new sfWidgetFormJQueryDate(array('config' => '{firstDay: 1, changeMonth: true, changeYear: true}', 'culture' => 'es', 'date_widget' => new sfWidgetFormDate(array('years' => array_combine($years, $years), 'format' => '%day%%month%%year%' )))));
      
      
      $this->validatorSchema['fecha'] = new sfValidatorDate(array('min' => time()), array('min' => 'La fecha debe ser mayor al dia de hoy', 'required' => 'Por favor escoja una fecha', 'invalid' => 'Fecha incorrecta verifique su eleccion'));

  }
  
  /*
   * Ing. Roberto Hernandez De La Luz
   * Fecha: 19/08/11
   * Funcion para mostrar un formulario de nuevas citas cargando de manera oculta 
   * los valores por defecto de la cita y mostrando la lista de servicios que se le recomiendan*/
  public function serviciosrecomendados($usuario, $vehiculo, $detalles, $fecha, $hora, $servicios, $kilometraje){
      
      //Se desactivan todos los valores por defecto o que debe activar el administrador
      unset($this['created_at'],$this['id_cita'],$this['fecha_entrega'],$this['hora_entrega'],$this['detalles'],
              $this['observacion'],$this['id_vendedor'],$this['servicios_list'],$this['status'],
              $this['is_aceptado'],$this['encuesta'], $this['claveseguridad'], $this['hora_preferida']);
      
      
      //Se ocultan todos los campos cuyos valores que debe recibir como parametros desde la pagina anterior
      $this->widgetSchema['is_pending'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['id_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['id_vehiculo_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['detalles_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['fecha'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['hora'] = new sfWidgetFormInputHidden();
      //$this->widgetSchema['hora_preferida'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['kilometraje'] = new sfWidgetFormInputHidden();
      
      //Se crea el widget para los servicios y se crean los servicios.
      
      
      foreach($servicios as $servicio):
          
          $servi[$servicio->getIdServicio()] = $servicio->getNombre();
          
      endforeach;
      
      $this->widgetSchema['servicios'] = new sfWidgetFormChoice(array('choices' => $servi, 'label' => 'Servicios Recomendados', 'expanded' => true, 'multiple' => true));
      //Se modifico a solicitud del cliente ahora no es obligatorio... 14/11/2011
      //$this->validatorSchema['servicios'] = new sfValidatorChoice(array('choices' => array_keys($servi), 'multiple' => true, 'required' => true, 'min' => 1), array('required' => 'Seleccione al menos un servicio'));
      $this->validatorSchema['servicios'] = new sfValidatorChoice(array('choices' => array_keys($servi), 'multiple' => true, 'required' => false, 'min' => 0), array('required' => 'Seleccione al menos un servicio'));
      
      //Se colocan como valores por defecto los parametros que recibe
      $this->setDefault('id_usuario', $usuario);
      $this->setDefault('id_vehiculo_usuario', $vehiculo);
      $this->setDefault('detalles_usuario', $detalles);
      $this->setDefault('fecha', $fecha);
      $this->setDefault('hora', $hora);
      //$this->setDefault('hora_preferida', $horapreferida);
      $this->setDefault('kilometraje', $kilometraje);
      $this->setDefault('is_pending', true);
      $this->widgetSchema['kilometraje']->setLabel('Kilometraje actual:');
  }
  
/*
   * Ing. Roberto Hernandez De La Luz
   * Fecha: 30/09/11
   * Funcion para mostrar un formulario de nuevas citas cargando de manera oculta 
   * los valores por defecto de la cita y no mostrando la lista de servicios que se le recomiendan*/
  public function noserviciosrecomendados($usuario, $vehiculo, $detalles, $fecha, $hora, $kilometraje){
      
      //Se desactivan todos los valores por defecto o que debe activar el administrador
      unset($this['created_at'],$this['id_cita'],$this['fecha_entrega'],$this['hora_entrega'],$this['detalles'],
              $this['observacion'],$this['id_vendedor'],$this['servicios_list'],$this['status'],
              $this['is_aceptado'],$this['encuesta'], $this['claveseguridad'], $this['hora_preferida'] );
      
      
      //Se ocultan todos los campos cuyos valores que debe recibir como paramatros desde la pagina anterior
      $this->widgetSchema['is_pending'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['id_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['id_vehiculo_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['detalles_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['fecha'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['hora'] = new sfWidgetFormInputHidden();
      //$this->widgetSchema['hora_preferida'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['kilometraje'] = new sfWidgetFormInputHidden();

      //Se colocan como valores por defecto los parametros que recibe
      $this->setDefault('id_usuario', $usuario);
      $this->setDefault('id_vehiculo_usuario', $vehiculo);
      $this->setDefault('detalles_usuario', $detalles);
      $this->setDefault('fecha', $fecha);
      $this->setDefault('hora', $hora);
      //$this->setDefault('hora_preferida', $horapreferida);
      $this->setDefault('kilometraje', $kilometraje);
      $this->setDefault('is_pending', true);
      
      $this->widgetSchema['kilometraje']->setLabel('Kilometraje actual:');
  }  
  
  
   /*
   * Ing. Roberto Hernandez De La Luz
   * Fecha: 25/08/11
   * Funcion para mostrar un formulario con los datos cargados previamente y solo deberia estar disponible
   * para modificar los campos de observaciones, fecha de entrega, etc y deberia desplegar un campo para enviar el email*/
  public function revisioncitaenvio($fecha){
      
      unset($this['created_at'],$this['id_vendedor'],$this['status'],
              $this['is_aceptado'],$this['is_pending'], $this['encuesta'], $this['kilometraje'],
              $this['claveseguridad'], $this['id_vehiculo_usuario'], $this['detalles'], $this['servicios_list'],
              $this['hora_preferida'], $this['detalles_usuario']);

      $this->widgetSchema['id_usuario'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['id_cita'] = new sfWidgetFormInputHidden();
      $this->widgetSchema['hora_preferida'] = new sfWidgetFormInput(array('label' => 'Horario Preferido'));
      $this->widgetSchema['observacion'] = new sfWidgetFormTextarea(array('default' => 'Gracias por su preferencia'));;
      
      $this->widgetSchema['observacion']->setAttribute("onfocus", "if(this.value=='Gracias por su preferencia')this.value='';");
      $this->widgetSchema['observacion']->setAttribute("onblur", "if(this.value=='')this.value='Gracias por su preferencia';");
      
      $this->widgetSchema['observacion']->setLabel('Comentario para Email');
      
      
      $this->widgetSchema['hora'] = new sfWidgetFormChoice(array('choices'  => Doctrine_Core::getTable('Cita')->getHoras(),'expanded' => false,));
      $years = range(date('Y'), date('Y')+1);
      $this->setWidget('fecha',new sfWidgetFormJQueryDate(array('config' => '{firstDay: 1, changeMonth: true, changeYear: true}', 'culture' => 'es', 'date_widget' => new sfWidgetFormDate(array('years' => array_combine($years, $years), 'format' => '%day%%month%%year%' )))));
      $this->setWidget('fecha_entrega',new sfWidgetFormJQueryDate(array('config' => '{firstDay: 1, changeMonth: true, changeYear: true}', 'culture' => 'es', 'date_widget' => new sfWidgetFormDate(array('years' => array_combine($years, $years), 'format' => '%day%%month%%year%' )))));
      
      $this->validatorSchema['fecha'] = new sfValidatorDate(array('required' => true), array('required' => 'Por favor escoja una fecha', 'invalid' => 'Fecha incorrecta verifique su eleccion'));
      $this->validatorSchema['fecha_entrega'] = new sfValidatorDate(array('min' => strtotime($fecha), 'required' => true), array('min' => 'La fecha debe ser como minimo la fecha de la cita', 'required' => 'Por favor escoja una fecha', 'invalid' => 'Fecha incorrecta verifique su eleccion'));
      $this->validatorSchema['observacion'] = new sfValidatorString(array('max_length' => 1000), array('max_length' => 'Su mensaje debe ser mas corto', 'required' => 'Por favor recuerde enviar un mensaje al usuario confirmandole o negandole la cita'));
      $this->validatorSchema['id_cita'] = new sfValidatorInteger(array(), array('invalid' => 'No valido'));
      
      

  }
  
}
